#ifndef JUGADOR_H_
#define JUGADOR_H_

#include <string>
#include <list>
#include "Territorio.h"

using namespace std;

class CartaDeObjetivos;

class Jugador
{
private:
	string nombre;
	string color;
	unsigned int ejercitos;
	list<Territorio*> territoriosBajoControl;
	CartaDeObjetivos* cartaDeObjetivos;
public:
	/**Este constructor si parametros se necesita para poder permitir la eleccion del color del Jugador
	 * por parte del cliente. Si bien estoy ampliando la brecha semantica, no es un cambio que afecte mucho
	 * porque la real importancia del Jugador en la aplicacion empieza cuando empieza la partida.
	 */
	Jugador();
	
	Jugador(string nombre, string color);
	string getColor();
	void setColor(string color);
	string getNombre();
	void setNombre(string nombre);
	virtual void asignarEjercitos(unsigned int cantidadDeEjercitos);
	void setEjercitos(unsigned int cantidadDeEjercitos);
	virtual void quitarEjercitos(unsigned int cantidadDeEjercitos);
	unsigned int getCantidadDeEjercitos();
	CartaDeObjetivos* getCartaDeObjetivos();
	virtual void setCartaDeObjetivos(CartaDeObjetivos* cartaDeObjetivos);
	bool equals(Jugador* jugador) {
		return (color == jugador->color);
	}
	string toString() {
		return "Jugador de color "+ color;
	}
	virtual ~Jugador();
};

#endif /*JUGADOR_H_*/
